package com.wltjack.sysmanage.common.datasource;

import lombok.extern.slf4j.Slf4j;
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;

/**
 * 功能描述: 扩展Spring的AbstractRoutingDataSource抽象类，实现动态数据源。
 * AbstractRoutingDataSource中的抽象方法determineCurrentLookupKey是实现数据源的route的核心，
 * 这里对该方法进行Override。 【上下文DbContextHolder为一线程安全的ThreadLocal】
 */
@Slf4j
//@Component
public class DynamicDataSource extends AbstractRoutingDataSource {

    @Override
    protected Object determineCurrentLookupKey() {
        String datasourceType = DynamicDataSourceContextHolder.getDataSourceType();
        log.debug("使用数据源 {}", datasourceType);
        return datasourceType;
    }

}
